//
// Created by ht on 16-12-5.
//

#ifndef COMPILER_CHECK_H
#define COMPILER_CHECK_H

#include <string>
#include "symtab.h"

using namespace std;

void Error(int type, int line, string msg);

void local_var_def(GTNode *node);

void global_var_def(GTNode *node);

void save_return_type(GTNode *node);
void func_def(GTNode *node);

void struct_def(GTNode *node);

void refer_var(GTNode *exp);

void refer_struct(GTNode *id);

void refer_array(GTNode *id);

void refer_func_no_param(GTNode *id);

void refer_func_with_param(GTNode *exp);

void basic_op_check(GTNode *r, GTNode *op1, GTNode *op2);

void logic_op_check(GTNode *r, GTNode *op1, GTNode *op2);

void assign_op_check(GTNode *r, GTNode *op1, GTNode *op2);

#endif //COMPILER_CHECK_H
